스프링 mvc Validation 추상화 org.springframework.validation.Validator 애플리케이션에서 사용하는 객체 검증용 인터페이스. 특징 어떤한 계층과도 관계가 없다. => 모든 계층(웹, 서비스, 데이터)에서 사용해도 좋다. 구현체 중 하나로, JSR-303(Bean Validation 1.0)과 JSR-349(Bean Validation 1.1)을 지원한다. (LocalValidatorFactor... 스프링 mvc스프링 mvc 스프링 AOP와 프록시 패턴 1. AOP(Aspect of Programming) 관점 지향 프로그래밍 2. AOP 구현 방법 다양한 AOP 구현 방법(옵션) 컴파일 : A.java ----(AOP)---> A.class (AspectJ) 컴파일 중간에 AOP를 조작 바이트코드 조작 : A.java -> A.class ---(AOP)---> 메모리 (AspectJ) 클래스 로더가 클래스 파일을 로딩하는 시점에서 AOP를... 스프링 mvc스프링 mvc IoC 컨테이너 (6) : ResourceLoader ResourceLoader 리소스를 읽어오는 기능을 제공하는 인터페이스 ApplicationContext extends ResourceLoader 리소스 읽어오기 파일 시스템에서 읽어오기 클래스패스에서 읽어오기 URL로 읽어오기 상대/절대 경로로 읽어오기 Resource getResource(java.lang.String location) 빌드를 하면 target class 밑에 리소스가 들... 스프링 mvc스프링 mvc IoC 컨테이너 (4) : MessageSource 9. MessageSource 국제화 (i18n) 기능을 제공하는 인터페이스 ApplicationContext extends MessageSource getMessage(String code, Object[] args, String, default, Locale, loc) 리로딩 기능이 있는 메시지 소스 사용하기 이렇게 사용하면 message 소스를 바꾼 후 build하면 message를 바... 스프링 mvc스프링 mvc IoC 컨테이너 (2) : @Autowired, 컴포넌트 스캔, 빈의 스코프 사용할 수 있는 위치 생성자나 필드에 의존성을 주입받으려고 하는 경우 객체 자체는 만들 수 있지만 @Autowired라는 애노테이션이 붙으면 빈이 있어야만 의존성을 주입받을 수 있기 때문에 애플리케이션 구동에 실패한다. 해당 타입의 빈이 없는 경우 해당 타입의 빈이 한 개인 경우 해당 타입의 빈이 여러 개인 경우 1. 같은 이름의 빈 찾으면 해당 빈 사용 같은 타입의 빈이 여러개 일 때 해당... 스프링 mvc스프링 mvc IoC 컨테이너 (1) : IoC 컨테이너, BeanFactory, ApplicationContext 스프링 IoC 컨테이너가 하는 주요한 기능은 "빈(bean)을 만들고 엮어주며 제공해주는 것"(빈의 생성, 빈의 의존성 주입, 빈의 스코프 관리)이다. 스프링 IoC 컨테이너의 가장 최상위에 있는 인터페이스는 BeanFactory이다. 스프링 공식 문서에 보면 BeanFactory의 요점을 다음과 같이 정의한다. 빈 설정 소스로 부터 빈 정의를 읽어들이고, 빈을 구성하고 제공한다. 스프링 I... 스프링 mvc스프링 mvc 스프링 MVC 동작 원리(3) : 서블릿 애플리케이션 개발 3. 서블릿 애플리케이션 개발 준비물: 메이븐, 톰캣 메이븐 프로젝트 생성 archtype에서 webapp 선택 pom.xml에 servlet dependency 추가 Project Structure에서 java 디렉토리를 Sources로 지정 HelloServlet 클래스 생성 서블릿 독자적으로 실행할 수 없기 때문에 서블릿 컨테이너, 톰캣이 필요하다. 톰캣 9버전 설치 후 Fix를 눌러 ... 스프링 mvc스프링 mvc MVC 활용(18) : 핸들러 메소드 10부 - @SessionAttribute 핸들러 메소드 10부 - @SessionAttribute HTTP 세션에 들어있는 값 참조할 때 사용 HttpSession을 사용할 때 비해 타입 컨버전을 자동으로 지원하기 때문에 조금 편리함. HTTP 세션에 데이터를 넣고 빼고 싶은 경우에는 HttpSession을 사용할 것. @SessionAttributes와는 다르다. @SessionAttributes는 해당 컨트롤러 내에서만 동작. ... 스프링 mvc스프링 mvc MVC 활용(8) : HTTP 요청 맵핑하기 7부 - 연습 문제 8. HTTP 요청 맵핑하기 7부 - 연습 문제 다음 요청을 처리할 수 있는 핸들러 메소드를 맵핑하는 @RequestMapping (또는 @GetMapping, @PostMapping 등)을 정의하세요. GET /events GET /events/1, GET /events/2, GET /events/3, POST /events CONTENT-TYPE: application/json ACCEP... 스프링 mvc스프링 mvc MVC 활용(3) : HTTP 요청 맵핑하기 2부 - URI 패턴 맵핑 3. HTTP 요청 맵핑하기 2부 - URI 패턴 맵핑 URI, URL, URN 햇갈린다 여러개의 문자열로 매핑할 수도 있다. 테스트 코드 ? : 한 글자 (“/author/???” => “/author/123”) * : 여러 글자 (“/author/*” => “/author/keesun”) ** : 여러 패스 (“/author/** => “/author/keesun/book”) 테스트 코드... 스프링 mvc스프링 mvc MVC 활용(10) : 핸들러 메소드 2부 - URI 패턴 핸들러 메소드 2부 - URI 패턴 @PathVariable 요청 URI 패턴의 일부를 핸들러 메소드 아규먼트로 받는 방법. 타입 변환 지원. (기본)값이 반드시 있어야 한다. Optional 지원. 자바 8부터는 Optional을 쓸 수도 있다. 이렇게 되면 @PathVariable( required=false)를 준거랑 마찬가지이다. @MatrixVariable 요청 URI 패턴에서 키/... 스프링 mvc스프링 mvc MVC 구조 이해 핸들러 조회: 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러(컨트롤러)를 조회한다. 핸들러 어댑터 조회: 핸들러를 실행할 수 있는 핸들러 어댑터를 조회한다. 핸들러 어댑터 실행: 핸들러 어댑터를 실행한다. ModelAndView 반환: 핸들러 어댑터는 핸들러가 반환하는 정보를 ModelAndView로 변환해서 반환한다. 핸들러 매핑: org.springframework.web.servlet... 스프링 mvc스프링 mvc
Validation 추상화 org.springframework.validation.Validator 애플리케이션에서 사용하는 객체 검증용 인터페이스. 특징 어떤한 계층과도 관계가 없다. => 모든 계층(웹, 서비스, 데이터)에서 사용해도 좋다. 구현체 중 하나로, JSR-303(Bean Validation 1.0)과 JSR-349(Bean Validation 1.1)을 지원한다. (LocalValidatorFactor... 스프링 mvc스프링 mvc 스프링 AOP와 프록시 패턴 1. AOP(Aspect of Programming) 관점 지향 프로그래밍 2. AOP 구현 방법 다양한 AOP 구현 방법(옵션) 컴파일 : A.java ----(AOP)---> A.class (AspectJ) 컴파일 중간에 AOP를 조작 바이트코드 조작 : A.java -> A.class ---(AOP)---> 메모리 (AspectJ) 클래스 로더가 클래스 파일을 로딩하는 시점에서 AOP를... 스프링 mvc스프링 mvc IoC 컨테이너 (6) : ResourceLoader ResourceLoader 리소스를 읽어오는 기능을 제공하는 인터페이스 ApplicationContext extends ResourceLoader 리소스 읽어오기 파일 시스템에서 읽어오기 클래스패스에서 읽어오기 URL로 읽어오기 상대/절대 경로로 읽어오기 Resource getResource(java.lang.String location) 빌드를 하면 target class 밑에 리소스가 들... 스프링 mvc스프링 mvc IoC 컨테이너 (4) : MessageSource 9. MessageSource 국제화 (i18n) 기능을 제공하는 인터페이스 ApplicationContext extends MessageSource getMessage(String code, Object[] args, String, default, Locale, loc) 리로딩 기능이 있는 메시지 소스 사용하기 이렇게 사용하면 message 소스를 바꾼 후 build하면 message를 바... 스프링 mvc스프링 mvc IoC 컨테이너 (2) : @Autowired, 컴포넌트 스캔, 빈의 스코프 사용할 수 있는 위치 생성자나 필드에 의존성을 주입받으려고 하는 경우 객체 자체는 만들 수 있지만 @Autowired라는 애노테이션이 붙으면 빈이 있어야만 의존성을 주입받을 수 있기 때문에 애플리케이션 구동에 실패한다. 해당 타입의 빈이 없는 경우 해당 타입의 빈이 한 개인 경우 해당 타입의 빈이 여러 개인 경우 1. 같은 이름의 빈 찾으면 해당 빈 사용 같은 타입의 빈이 여러개 일 때 해당... 스프링 mvc스프링 mvc IoC 컨테이너 (1) : IoC 컨테이너, BeanFactory, ApplicationContext 스프링 IoC 컨테이너가 하는 주요한 기능은 "빈(bean)을 만들고 엮어주며 제공해주는 것"(빈의 생성, 빈의 의존성 주입, 빈의 스코프 관리)이다. 스프링 IoC 컨테이너의 가장 최상위에 있는 인터페이스는 BeanFactory이다. 스프링 공식 문서에 보면 BeanFactory의 요점을 다음과 같이 정의한다. 빈 설정 소스로 부터 빈 정의를 읽어들이고, 빈을 구성하고 제공한다. 스프링 I... 스프링 mvc스프링 mvc 스프링 MVC 동작 원리(3) : 서블릿 애플리케이션 개발 3. 서블릿 애플리케이션 개발 준비물: 메이븐, 톰캣 메이븐 프로젝트 생성 archtype에서 webapp 선택 pom.xml에 servlet dependency 추가 Project Structure에서 java 디렉토리를 Sources로 지정 HelloServlet 클래스 생성 서블릿 독자적으로 실행할 수 없기 때문에 서블릿 컨테이너, 톰캣이 필요하다. 톰캣 9버전 설치 후 Fix를 눌러 ... 스프링 mvc스프링 mvc MVC 활용(18) : 핸들러 메소드 10부 - @SessionAttribute 핸들러 메소드 10부 - @SessionAttribute HTTP 세션에 들어있는 값 참조할 때 사용 HttpSession을 사용할 때 비해 타입 컨버전을 자동으로 지원하기 때문에 조금 편리함. HTTP 세션에 데이터를 넣고 빼고 싶은 경우에는 HttpSession을 사용할 것. @SessionAttributes와는 다르다. @SessionAttributes는 해당 컨트롤러 내에서만 동작. ... 스프링 mvc스프링 mvc MVC 활용(8) : HTTP 요청 맵핑하기 7부 - 연습 문제 8. HTTP 요청 맵핑하기 7부 - 연습 문제 다음 요청을 처리할 수 있는 핸들러 메소드를 맵핑하는 @RequestMapping (또는 @GetMapping, @PostMapping 등)을 정의하세요. GET /events GET /events/1, GET /events/2, GET /events/3, POST /events CONTENT-TYPE: application/json ACCEP... 스프링 mvc스프링 mvc MVC 활용(3) : HTTP 요청 맵핑하기 2부 - URI 패턴 맵핑 3. HTTP 요청 맵핑하기 2부 - URI 패턴 맵핑 URI, URL, URN 햇갈린다 여러개의 문자열로 매핑할 수도 있다. 테스트 코드 ? : 한 글자 (“/author/???” => “/author/123”) * : 여러 글자 (“/author/*” => “/author/keesun”) ** : 여러 패스 (“/author/** => “/author/keesun/book”) 테스트 코드... 스프링 mvc스프링 mvc MVC 활용(10) : 핸들러 메소드 2부 - URI 패턴 핸들러 메소드 2부 - URI 패턴 @PathVariable 요청 URI 패턴의 일부를 핸들러 메소드 아규먼트로 받는 방법. 타입 변환 지원. (기본)값이 반드시 있어야 한다. Optional 지원. 자바 8부터는 Optional을 쓸 수도 있다. 이렇게 되면 @PathVariable( required=false)를 준거랑 마찬가지이다. @MatrixVariable 요청 URI 패턴에서 키/... 스프링 mvc스프링 mvc MVC 구조 이해 핸들러 조회: 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러(컨트롤러)를 조회한다. 핸들러 어댑터 조회: 핸들러를 실행할 수 있는 핸들러 어댑터를 조회한다. 핸들러 어댑터 실행: 핸들러 어댑터를 실행한다. ModelAndView 반환: 핸들러 어댑터는 핸들러가 반환하는 정보를 ModelAndView로 변환해서 반환한다. 핸들러 매핑: org.springframework.web.servlet... 스프링 mvc스프링 mvc